using System;

namespace Awaken.Framework
{
    /// <summary>
    /// Defines that members than an entity must implement.  An entity is a business
    /// object that can be persisted to a database.  Usually there is a 1-1 relationship
    /// between an entity and a single database table.
    /// </summary>
    /// <remarks>
    /// The EntityID and EntityName are not required but are provided to standardize
    /// how all entities provide their name and ID.
    /// </remarks>
    public interface IEntity
    {
        /// <summary>
        /// Returns the unique identifier for the given entity.
        /// </summary>
        string EntityID{ get; }

        /// <summary>
        /// Returns the unique name of the given entity.
        /// </summary>
        string EntityName { get; }

        /// <summary>
        /// Saves the entity.
        /// </summary>
        void Save();

        /// <summary>
        /// Deletes the entity.
        /// </summary>
        void Delete();
    }
}
